Multi-processor computing systems are becoming more and more popular for use in applications that require large amounts of processing power. One type of multi-processor computing system is a symmetric multi-processing or “SMP” architecture. In an SMP architecture, multiple processors are used to perform tasks or processes in parallel. This allows, for example, the processors to execute different portions or “threads” of an application at the same time. Any available processor may be assigned to execute one or multiple threads. Also, additional processors may be added to improve the performance of the computer system and to execute additional threads.
In order to execute multiple threads at the same time, the execution of the threads typically needs to be scheduled. Within a single processor, scheduling typically involves selecting which thread to execute at any given time. An instruction from the selected thread is then issued for execution by the processor. Any remaining threads are “stalled,” meaning that instructions for those threads are not issued to the processor for execution. A problem with conventional scheduling mechanisms is that the mechanisms are typically slow, which often reduces the performance of the multi-processor systems.